package dominio;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import enums.TipoLista;

@Entity
@Table(name = "ListaPrecios")
public class ListaPrecios {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int listaPrecioId;
	@OneToMany(cascade={CascadeType.ALL})
	@JoinColumn(name = "listaPrecioId")
	private List<ItemListaPrecios> items;

	 @OneToOne(cascade = CascadeType.MERGE)
	 @JoinColumn(name="idProveedor")
	 private Proveedor proveedor;
	
	 private int numeroLista;
	 private String fecha;
	 private String termino;
	 private int reemplazaListaNro;
	 @Column(name="TipoLista")
	 @Enumerated(EnumType.ORDINAL)
	 private TipoLista tipo;
	 @OneToOne(cascade = CascadeType.ALL)
	 @JoinColumn(name="formaPagoId")
	 private FormaPago formaPago;


	

	public int getListaPrecioId() {
		return listaPrecioId;
	}

	public ListaPrecios() {
		super();
		items = new ArrayList<ItemListaPrecios>();
	}

	public void setListaPrecioId(int listaPrecioId) {
		this.listaPrecioId = listaPrecioId;
	}

	public List<ItemListaPrecios> getItems() {
		return items;
	}

	public void setItems(List<ItemListaPrecios> items) {
		this.items = items;
	}

	 public Proveedor getProveedor() {
	 return proveedor;
	 }
	
	 public void setProveedor(Proveedor proveedor) {
	 this.proveedor = proveedor;
	 }
	
	 public int getNumeroLista() {
	 return numeroLista;
	 }
	
	 public void setNumeroLista(int numeroLista) {
	 this.numeroLista = numeroLista;
	 }
	
	 public String getFecha() {
	 return fecha;
	 }
	
	 public void setFecha(String fecha) {
	 this.fecha = fecha;
	 }
	
	 public String getTermino() {
	 return termino;
	 }
	
	 public void setTermino(String termino) {
	 this.termino = termino;
	 }
	
	 public int getReemplazaListaNro() {
	 return reemplazaListaNro;
	 }
	
	 public void setReemplazaListaNro(int reemplazaListaNro) {
	 this.reemplazaListaNro = reemplazaListaNro;
	 }
	
	  public TipoLista getTipo() {
	  return tipo;
	  }
	 
	  public void setTipo(TipoLista tipo) {
	  this.tipo = tipo;
	  }
	
	public void agregarItemListaPrecios(ItemListaPrecios item) {
		if (items==null)
			items = new ArrayList<ItemListaPrecios>();
		items.add(item);

	}
	
	 public FormaPago getFormaPago() {
	 return formaPago;
	 }
	
	 public void setFormaPago(FormaPago formaPago) {
	 this.formaPago = formaPago;
	 }
	
	
}
